The use of one dimensional barcodes on consumer products and product packaging has become nearly ubiquitous. These barcodes linearly encode a numerical digit sequence that uniquely identifies the product to which the barcode is affixed. The ability to accurately and quickly decode barcodes under a variety of conditions on a variety of devices poses a number of interesting design challenges. For example, a barcode recognition algorithm must be able to extract information encoded in the barcode robustly under a variety of lighting conditions. Furthermore, the computational cost of signal processing and decoding needs to be low enough to allow real-time operation of barcode recognition on low-powered portable computing devices such as smart phones and electronic tablet computers.